<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="./a.js"></script>
    <script>
        // 高阶函数：以函数作为输入或者是输出的函数被称为高阶函数；
        // cb: callback :回调
        // i/o
        // function fn(a,b,c){
        //     console.log("函数fn的逻辑");
        //     return a+b+c;
        // }


        // 1.以函数作为输入就是回调
        // function fn(a){
        //     // console.log(a);
        //     a();
        // }

        // fn(function(){
        //     console.log(123);
        // });

        // 一般前提下 回调是用来解决异步问题；
        // fn(function(){
        //     console.log(111);
        // });


        // 2.以函数作为输出；
    //     function fn(){
    //         return {name:123};
    //     }
    //    var res =  fn();
    //    console.log(res);

        // function fn(){
        //     console.log("我是fn函数");
        //     return function(){
        //         console.log("我是返还的函数");
        //     }
        // }
        // var res = fn();
        // res();
       

        // function add(a,b,c){
        //     return a + b + c;
        // }

        // 以函数作为输出的函数；
            function add(a){
                return function(b){
                    return function(c){
                        return a + b + c;
                    }
                }
            }

            var res = add(1)(2)(3);
            console.log(res);
        







    </script>
</body>
</html>